/*
 * @Author: TSC
 * @email: hosmrlan@outlook.com
 * @Date: 2023-11-15 21:28:02
 * @version: 
 * @LastEditors: EYEN-rick hostmrlan@outlook.com
 * @LastEditTime: 2024-12-01 19:46:20
 * @Description: 按键配置文件
 */
#ifndef _KEY_CONFIG_H__
#define _KEY_CONFIG_H__


#ifdef __cplusplus
extern "C"
{
#endif
#ifdef CONFIG_KCONFIG_HEL_KEY

#if 0

/*-------------------------------------------------------------*/


#define KEY_IO                  (1)//io按键
#define KEY_ROCKER              (1)//摇杆按键
#define KEY_POTENTIOMETER       (1)//电位器


/*-------------------------end---------------------------------*/








#define USER_MALLOC     (0)//使能动态分配


//建议 time  =  5ms一次则寄存器设置为8  判断时长 ： KEY_REG_REQ*5 
#define KEY_REG_BITS    2//设置位宽类型 0-32
#define KEY_REG_REQ     1//设置判断长度  

#define KEY_STATE_OK    0//按键按下状态
#define KEY_KEEP_ON     50//设置长按门限 *10ms
#define KEY_TIME_ON     50//设置长按门限 *10
#define KEY_CALL_INDEX_EN   (1)//是否按顺序执行

#else

#define KEY_IO                  CONFIG_KEY_IO//io按键
#define KEY_ROCKER              CONFIG_KEY_ROCKER//摇杆按键
#define KEY_POTENTIOMETER       CONFIG_KEY_POTENTIOMETER//电位器



#define KEY_REG_BITS    CONFIG_KEY_REG_BITS//设置位宽类型 0-32
#define KEY_REG_REQ     CONFIG_KEY_REG_REQ//设置判断长度  

#define KEY_STATE_OK    CONFIG_KEY_STATE_OK//按键按下状态
#define KEY_KEEP_ON     CONFIG_KEY_KEEP_ON//设置长按门限 *10ms
#define KEY_TIME_ON     CONFIG_KEY_TIME_ON//设置长按门限 *10
#define KEY_CALL_INDEX_EN   CONFIG_KEY_CALL_INDEX_EN//是否按顺序执行
#endif







// #define KEY_IO_NUM         1//按键数量
















#if  KEY_REG_BITS   <= 8      
    #define KEY_REG_TYPE    char
    #define KEY_CALL_FCUN_MAX   8 //回调函数数量
#elif KEY_REG_BITS  <= 16
    #define KEY_REG_TYPE    short
    #define KEY_CALL_FCUN_MAX   16 //回调函数数量
#elif KEY_REG_BITS  <= 32
    #define KEY_REG_TYPE    int
    #define KEY_CALL_FCUN_MAX   32 //回调函数数量
#endif



// #if KEY_IO_NUM > KEY_CALL_FCUN_MAX
//     #error key_num too much
// #endif


#endif




#ifdef __cplusplus
}
#endif
#endif
